Fix from Alex to deal with how I broke his code merging the new option
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 7 Feb 2003 17:22:10 +0000 (17:22 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 7 Feb 2003 17:22:10 +0000 (17:22 +0000)
handlers.

gpsbabel/defs.h
gpsbabel/duplicate.c
gpsbabel/filter_vecs.c

index c63bbac1d24e40edcec2527b326fa003acd775c1..6a87684e6f030da57e82594a90731283d3915ce2 100644 (file)
@@ -227,6 +227,7 @@ typedef struct filter_vecs {
        filter_init f_init;
        filter_process f_process;
        filter_deinit f_deinit;
+       arglist_t *args;
 } filter_vecs_t;
 
 void waypt_init(void);
index 5b53acc2a96b686135ecbdd50ac689ba450db750..6626e24d64419ed78ba7450e128fe4c436d2b947 100644 (file)
@@ -193,8 +193,6 @@ duplicate_process(void)
 void
 duplicate_init(const char *args) 
 {
-       const char *p;
-
        duplicate_shortname = snopt != NULL;
        duplicate_location = lcopt != NULL;
 }
@@ -207,5 +205,6 @@ duplicate_deinit(void)
 filter_vecs_t duplicate_vecs = {
        duplicate_init,
        duplicate_process,
-       duplicate_deinit
+       duplicate_deinit,
+       dup_args
 };
index f4c0c2ed4cd16975d81d73d1ba66062ad1caacaa..e01ef8b07096e0bf3c5082d5554dee9e2dff8902 100644 (file)
@@ -58,16 +58,30 @@ find_filter_vec(char *const vecname, char **opts)
        char *svecname = strtok(v, ",");
 
        while (vec->vec) {
-               if (strcmp(svecname, vec->name) == 0) {
-                       char * res = strchr(vecname, ',');
-                       if (res)
-                               *opts = strchr(vecname, ',')+1;
-                       else
-                               *opts = NULL;
-                       free(v);
-                       return vec->vec;
+               arglist_t *ap;
+               char *res;
+
+               if (strcmp(svecname, vec->name)) {
+                       vec++;
+                       continue;
                }
-               vec++;
+
+               res = strchr(vecname, ',');
+               if (res) {
+                       *opts = strchr(vecname, ',')+1;
+
+                       if (vec->vec->args) {
+                               for (ap = vec->vec->args; ap->argstring; ap++){
+                                       *ap->argval = get_option(*opts, ap->argstring);
+                               }
+                       }
+               } else {
+                       *opts = NULL;
+               }
+
+               free(v);
+               return vec->vec;
+               
        }
        free(v);
        return NULL;